/**
 * 微信模板消息配置类
 */
class WechatTemplateMessage {
	constructor() {
		this.baseUrl = 'https://api.weixin.qq.com';

		// 模板ID配置 - 根据官方文档更新
		this.templateIds = {
			// 提现结果通知 - 提现单号、提现金额、提现时间、备注
			withdrawResult: 'iTFq4O8vy1otLub260xOJs_sNhLoBdQGdgILOhV5ly4',
			// 提现失败提醒 - 审核状态、提现时间、提现金额、失败原因
			withdrawFailed: 'yZAoNqEJAM0OP4JD96Kw-5D5Tbu-pt7-ADmuzpq6XYk',
			// 新订单通知 - 订单编号、订单状态、下单用户、收货地址、下单时间
			newOrder: 'QPEqLzmTBmfQoX1-1SAgi7sffqD8uI3Uj7odDDAcjn0',
			// 提现成功通知 - 提现产品、提现金额、提现时间、备注、到账时间
			withdrawSuccess: '6Xcz_QoOnTUjUIlBvgF63q9CjvGVgSwkLuWJZXsOcBM',
			// 违规警告提醒 - 昵称、告警内容、处理结果、备注
			violationWarning: 'hY6sjQHAptdQX22GIeG1Dy_Nayv_guMmb7oE4xjcEfI',
			// 订单取消通知 - 订单类型、订单名称、订单号、订单金额、取消时间
			orderCancelled: 'xV6gegv5o_6AHjaBEYxyWpwtZ1c-dFBDHFiRbG6uhU',
			// 订单完成通知 - 订单类型、订单状态、订单金额、完成时间、订单号
			orderCompleted: '0kIkcR2nNQQigc7x_etb9yDzHlAitfRiCFSAC0igmsk',
			// 订单接单通知 - 订单号、订单金额、任务名称、接单时间、跑腿骑手
			orderAccepted: 'm29dlgGaPLcaNJAt3EswljAewCvh33QkAfzKBYOuFkI',
			// 被举报通知 - 违规内容、违规原因、温馨提示
			reportedNotification: 'dM4uvJ7PG5ueRnUzVvDePL3OSgM9ky5qZi4xS-Ahtx4',
			// 审核结果通知 - 审核类型、审核内容、审核结果、审核时间、审核说明
			auditResult: '0ROgsd88Mm7Kol2SWAsP1YXKgfG5ZYDQTR0PXiEWMAc',
			// 支付成功通知 - 商品名称、订单编号、订单金额、支付金额、订单时间
			paymentSuccess: 'F_yq6ekY8tblr3isuWi5vSDtS83flu3SLJHBS4neJfY',
			// 站内信提醒 - 站内信内容、时间、详情内容、发件人
			internalMessage: 'U5veoyXXwNHSw-mO61bsxcwlOj_9eR8BaBbc3fVJXKQ',
			// 商品订单送达通知 - 订单号、商品名称、送达时间、店铺名称
			product_order_delivered: '0kIkcR2nNQQigc7x_etb9yDzHlAitfRiCFSAC0igmsk'
		};
	}

	/**
	 * 获取模板ID
	 * @param {string} key 模板键名
	 * @returns {string|null} 模板ID
	 */
	getTemplateId(key) {
		return this.templateIds[key] || null;
	}

	/**
	 * 获取多个模板ID
	 * @param {Array} keys 模板键名数组
	 * @returns {Array} 模板ID数组
	 */
	getTemplateIds(keys) {
		return keys.map(key => this.getTemplateId(key)).filter(id => id !== null);
	}

	/**
	 * 获取所有模板ID
	 * @returns {Object} 所有模板ID配置
	 */
	getAllTemplateIds() {
		return {
			...this.templateIds
		};
	}

	/**
	 * 验证模板ID是否有效
	 * @param {string} templateId 模板ID
	 * @returns {boolean} 是否有效
	 */
	isValidTemplateId(templateId) {
		return Object.values(this.templateIds).includes(templateId);
	}

	/**
	 * 获取模板类型分组
	 * @returns {Object} 模板分组配置
	 */
	getTemplateGroups() {
		return {
			withdraw: ['withdrawResult', 'withdrawFailed', 'withdrawSuccess'],
			order: ['newOrder', 'orderCancelled', 'orderCompleted', 'orderAccepted', 'paymentSuccess', 'product_order_delivered'],
			community: ['violationWarning', 'reportedNotification', 'auditResult'],
			system: ['internalMessage']
		};
	}
}

export default WechatTemplateMessage;